


//
// Created by Lenovo on 2025/6/15.
//
#include "Stats.h"
#include <algorithm>

using namespace std;

extern Manager manager; // 声明外部全局 manager 实例
Stats stats(&manager);  // 使用 Manager 初始化 Stats



void Stats::sortPrice() {
    sortedProducts = manager->getProducts(""); // 获取最新数据
    sort(sortedProducts.begin(), sortedProducts.end(), [](Product *a, Product *b) {
        return a->getPrice() > b->getPrice(); // 降序排列
    });
}

void Stats::sortQuantity() {
    sortedProducts = manager->getProducts(""); // 获取最新数据
    sort(sortedProducts.begin(), sortedProducts.end(), [](Product *a, Product *b) {
        return a->getQuantity() > b->getQuantity(); // 降序排列
    });
}

void Stats::sortManufacturer() {
    sortedProducts = manager->getProducts(""); // 获取最新数据
    sort(sortedProducts.begin(), sortedProducts.end(), [](Product *a, Product *b) {
        return a->getManufacturer() > b->getManufacturer(); // 降序排列
    });
}

// 打印商品信息
void Stats::printProducts() {
    if (sortedProducts.empty()) {
        cout << "没有商品" << endl;
        return;
    }
    cout << "所有商品总数："<< getProductsNumber() << endl;
    for (auto product: sortedProducts) {
        //  如果商品不存在，则跳过
        if (!product) continue;
        cout << " 商品名称：" << product->getName()
             << " 生产厂家：" << product->getManufacturer()
             << " 商品品牌：" << product->getBrand()
             << " 商品价格：" << product->getPrice()
             << " 商品数量：" << product->getQuantity()
             << " 商品类型：" << product->getCategory() << endl;
    }
}


int Stats::getProductsNumber() {
    //  获取最新数据
    auto products = manager->getProducts("");
    return products.size();
}